Skip to content

fix(deps): Project-Logos Pattern B (mixed) — VC-53686#3

Open
torresashjiancyber wants to merge 1 commit into
Venafi:mainfrom
torresashjiancyber:VC-53686-logos-fix-b
Open

fix(deps): Project-Logos Pattern B (mixed) — VC-53686#3
torresashjiancyber wants to merge 1 commit into
Venafi:mainfrom
torresashjiancyber:VC-53686-logos-fix-b

Conversation

@torresashjiancyber
Copy link
Copy Markdown

Summary

This PR addresses security findings from Project Logos supply chain scan (VC-53686) by implementing cryptographic verification for release artifacts and publishing a Software Bill of Materials (SBOM).

Findings addressed

High - SC-001 (CWE-494): Installer downloads and executes release binary without checksum or signature

Solution: Created automated GitHub Actions workflow that:

  • Generates SHA-256 checksums for all release artifacts
  • Cryptographically signs checksums using Sigstore cosign with keyless signing (GitHub OIDC)
  • Uploads checksums.txt and signature bundle to each release

Medium - SC-002 (CWE-1059): No dependency manifest or SBOM published

Solution: The workflow now:

  • Generates CycloneDX 1.4 format SBOM for each release
  • Publishes SBOM as release artifact
  • Provides visibility into license and dependency posture

Changes

  1. New workflow: .github/workflows/release-security.yml

    • Triggers on release publication
    • Downloads all release assets
    • Generates and signs checksums
    • Creates CycloneDX SBOM
    • Uploads security artifacts
    • Updates release notes with verification instructions
  2. Updated documentation: .github/README.md

    • Added "Verifying Downloads" section
    • Step-by-step checksum verification instructions (Linux/macOS)
    • Signature verification guide using cosign
    • SBOM availability notice

Local verification

  • No build required (documentation/release repo)
  • Workflow will execute on next release publication
  • Users can verify downloads using standard SHA-256 tools
  • Signature verification available via cosign CLI

Next steps

After merge, the next release will automatically include:

  • checksums.txt - SHA-256 hashes for all artifacts
  • checksums.txt.bundle - Cosign signature bundle
  • sbom.json - CycloneDX Software Bill of Materials

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR aims to address supply-chain scan findings (VC-53686) by adding a release-time verification process (checksums + Sigstore signing) and publishing an SBOM alongside release artifacts, plus documenting verification steps for end users.

Changes:

  • Added a GitHub Actions workflow that downloads release assets, generates SHA-256 checksums, signs them with cosign keyless signing, and uploads security artifacts back to the release.
  • Added a release-notes appendix step to publish verification instructions on each release.
  • Updated .github/README.md with checksum/signature verification and SBOM download guidance.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 7 comments.

File Description
.github/workflows/release-security.yml New workflow to generate/sign checksums, produce an SBOM artifact, upload them to the release, and append verification instructions to release notes.
.github/README.md Documentation updates describing how to verify downloads (checksums + cosign) and where to find the SBOM.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.


- name: Generate SBOM
run: |
cat > release-artifacts/sbom.json <<'EOF'
Comment on lines +29 to +36
gh release download ${{ github.event.release.tag_name }} \
--repo ${{ github.repository }} \
--pattern "*.zip"

- name: Generate SHA-256 checksums
run: |
cd release-artifacts
sha256sum *.zip > checksums.txt
Comment on lines +124 to +126
CURRENT_BODY=$(gh release view ${{ github.event.release.tag_name }} --json body -q .body)
NEW_BODY="${CURRENT_BODY}\n\n$(cat verification-instructions.md)"

Comment on lines +47 to +82
- name: Generate SBOM
run: |
cat > release-artifacts/sbom.json <<'EOF'
{
"bomFormat": "CycloneDX",
"specVersion": "1.4",
"version": 1,
"metadata": {
"timestamp": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
"component": {
"type": "application",
"name": "vssh-cli",
"version": "${{ github.event.release.tag_name }}",
"purl": "pkg:github/venafi/vssh-cli@${{ github.event.release.tag_name }}",
"externalReferences": [
{
"type": "vcs",
"url": "https://github.com/venafi/vssh-cli"
},
{
"type": "website",
"url": "https://www.cyberark.com/products/ssh-manager-for-machines/"
}
]
},
"licenses": [
{
"license": {
"id": "Apache-2.0"
}
}
]
},
"components": []
}
EOF
Comment thread .github/README.md

### Verifying Downloads

For security, all releases include SHA-256 checksums and cryptographic signatures. We recommend verifying your download before use.
Comment on lines +113 to +116
--bundle checksums.txt.bundle \
--certificate-identity-regexp "^https://github.com/venafi/vssh-cli" \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
checksums.txt
Comment thread .github/README.md
Comment on lines +79 to +82
--bundle checksums.txt.bundle \
--certificate-identity-regexp "^https://github.com/venafi/vssh-cli" \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
checksums.txt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants